/* Repositorio.java
 *
 * Created on 12 de Dezembro de 2006, 03:32
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package magchess10.rn.tabuleiro;

import java.io.Serializable;

import magchess10.rn.pecas.Bispo;
import magchess10.rn.pecas.Cavalo;
import magchess10.rn.pecas.Peao;
import magchess10.rn.pecas.Pecas;
import magchess10.rn.pecas.Rainha;
import magchess10.rn.pecas.Torre;

/**
 *
 * @author LuizH
 */
public class Repositorio implements Serializable {
    
    private int [] c_quantidadeDePecas ;
    private Pecas [] c_pecas;
    private String c_corJogador;
    /** Creates a new instance of Repositorio */
    public Repositorio(String p_corJogador) {
     c_quantidadeDePecas = new int [5];
     c_corJogador = p_corJogador;
     for (int i=0; i<5; i++)
         c_quantidadeDePecas [i] =0;
     c_pecas = new Pecas [5];
    associarPecas (); 
    }
    
    private void associarPecas ()
    {
        c_pecas[0]= new Peao (false,c_corJogador, false);//saber se o peao sobe ou desce
        c_pecas[1]= new Cavalo (c_corJogador, false);
        c_pecas[2]= new Bispo (c_corJogador,false);
        c_pecas[3]= new Torre (c_corJogador,false);
        c_pecas[4]= new Rainha (c_corJogador,false);
    }
    
    public void incrementar (int p_numeroPeca)
    {
        c_quantidadeDePecas[p_numeroPeca] ++ ;
    }
    
   public void decrementar (int p_numeroPeca)
    {
       c_quantidadeDePecas[p_numeroPeca] -- ;
    }
    
    public Pecas getPeca (int p_numeroPeca)
    {
        if (haPecaPresente(p_numeroPeca))
        {    
        	Pecas l_pecaAtual = c_pecas [p_numeroPeca];
        	decrementar (p_numeroPeca);
        	associarPecas();
        	return l_pecaAtual;
        }
        return null;
    }
    
    private boolean haPecaPresente(int p_numeroPeca)
    {
        return (c_quantidadeDePecas[p_numeroPeca]>0 ? true : false );
    }    
}
